﻿using System;
using System.ComponentModel;

using SBPweb.MediaCenter.Common.Resources;
using SBPweb.MediaCenter.Common.Smartparts;

namespace SBPweb.MediaCenter.Common.Modularity
{
    public interface IModule
    {

        #region Property accessors

        IModuleHost Host
        {
            get;
        }

        string Name
        {
            get;
        }

        bool IsInitialized
        {
            get;
        }

        bool IsVisible
        {
            get;
            set;
        }

        bool IsEnabled
        {
            get;
            set;
        }

        ResourceHandler Resources
        {
            get;
        }

        ISmartpart[] Smartparts
        {
            get;
        }

        #endregion

        #region Public events

        event EventHandler VisibleChanged;
        event EventHandler EnabledChanged;

        #endregion

        #region Public methods

        void Initialize();

        void Finalize();

        #endregion

    }
}